import './utils/utils.js'
import App from './App'
import { createSSRApp } from 'vue'
import { createPinia } from 'pinia'
import { createPersistedState } from 'pinia-plugin-persistedstate'

export function createApp() {
	// app就是应用实例
	const app = createSSRApp(App)

	// 1. 创建Pinia实例
	const pinia = createPinia()

	// 挂载 persistedstate 插件

	// 问题：在小程序中没有持久化成功
	// 原因：是该插件默认使用的存储器是浏览器的localStorage
	// 解决方案：自定义一个存储器 -> uni.getStorageSync 和 uni.setStorageSync
	// pinia.use(piniaPluginPersistedstate)

	// 创建一个自己的插件实例
	pinia.use(
		// 自定义 Pinia 插件
		createPersistedState({
			key: (storeId) => `__persistedstate__${storeId}`,
			// 自定义本地存储的逻辑
			storage: {
				setItem(key, value) {
					uni.setStorageSync(key, value)
				},
				getItem(key) {
					return uni.getStorageSync(key)
				},
			},
		})
	)

	// 2. 将Pinia实例挂载到应用中
	app.use(pinia)

	return {
		app,
	}
}
